﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using skhukb.BL;
using skhukb.DB;
using skhukb.Models;
using System.Data.Linq;

namespace skhukb.Controllers
{
    [Authorize]
    public class CommentController : Controller
    {
        [skhukb.Util.AjaxOnly]
        [HttpPost]
        public ActionResult List(int targetType, long targetID)
        {
            using (var db = new DBDataContext()) {
                var 목록 = db.덧글.Where(p => p.대상ID == targetID && p.대상구분 == targetType).Select(p => new 덧글Model(p)).ToList();
                return PartialView("_List", new CommentListModel { 대상ID = targetID, 대상구분 = targetType, 목록 = 목록 });
            }
        }

        [skhukb.Util.AjaxOnly] [HttpPost]
        [ValidateInput(false)]
        public ActionResult Save(CommentEditModel 모델)
        {
            if (String.IsNullOrEmpty(모델.내용))
                return Json(new JsonModel { success = false, message = Consts.내용없음 });
            using (var db = new DBDataContext()) {
                if (모델.덧글ID == 0) {
                    var 새덧글 = new 덧글 { IP = Request.UserHostAddress, 내용 = 모델.내용, 사용자ID = 현재사용자.사용자.ID, 생성일 = DateTime.Now, 대상ID = 모델.대상ID, 대상구분 = 모델.대상구분 };
                    db.덧글.InsertOnSubmit(새덧글);
                } else {
                    var n = db.덧글.FirstOrDefault(p => p.ID == 모델.덧글ID);
                    if (n == null) return Json(new JsonModel { success = false, message = Consts.작업실패 });
                    if (n.사용자ID != 현재사용자.사용자.ID && 현재사용자.사용자.관리자 == false)
                        return Json(new JsonModel { success = false, message = Consts.권한없음 });
                    n.내용 = 모델.내용;
                }
                db.SubmitChanges();
                return Json(new JsonModel { success = true });
            }
        }

        [skhukb.Util.AjaxOnly] [HttpPost]
        public ActionResult Delete(long ID)
        {
            using (var db = new DBDataContext()) {
                var n = db.덧글.FirstOrDefault(p => p.ID == ID);
                if (n.사용자ID != 현재사용자.사용자.ID && 현재사용자.사용자.관리자 == false) return Json(new JsonModel { success = false, message = Consts.권한없음 });
                if (n != null) {
                    db.덧글.DeleteOnSubmit(n);
                    db.SubmitChanges();
                }
                return Json(new JsonModel { success = true });
            }
        }

    }
}